import { Toast } from 'antd-mobile';
import axios from "axios";
// import axios2 from "axios";
/* 
项目中 可能性 用到两个或者多个 不同服务器上的地址 
  A 服务器 有100个请求 
  B 服务器 有100个请求 

项目中 可能性 有两个 接口的 根地址 

axios 自己多创建几个axios的实例!!   官网!!! 
 */

// axios.create

export const baseURL = process.env.REACT_APP_URL;

// 一个 axios 的实例 
export const request = axios.create({
  baseURL: baseURL
});


// 异步请求计数器
let ajaxTimes=0;

// 添加请求拦截器
request.interceptors.request.use(function (config) {
  ajaxTimes++;
  Toast.loading('加载中...', 0);
  // 在发送请求之前做些什么
  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});

// 响应拦截器
request.interceptors.response.use(function (response) {
  ajaxTimes--;
  if(ajaxTimes===0){
    // 最后一个请求回来了
    Toast.hide();
  }
  // 对响应数据做点什么
  return response;
}, function (error) {
  // 对响应错误做点什么
  return Promise.reject(error);
});


/* 

promise.all     
1 同时发送多个请求出去 
2 最后一个请求回来了 再执行某个操作
3 首页的执行情况
  1 同时发送三个请求出去
  2 三个请求按顺序回来
    1 每一个请求回来了 都会 执行拦截器   Toast.hide();
  3 最后一个请求回来
     Toast.hide();
  4 如何解决 不要重复调用    Toast.hide()

*/

// export const promiseAll = async (arr) => {
//   Toast.loading('加载中all...', 0);
//   const resArr = await Promise.all(arr);
//   // .then(resArr=>{
//   //   return resArr
//   // })
//   Toast.hide();
//   return Promise.resolve(resArr);
// }